
 <!DOCTYPE HTML>
<html >
<head>
  <meta charset="UTF-8">
  
    <title>第三周周报 | B3434lockchain</title>
    <meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no">
    
    <meta name="author" content="b3434lockchain">
    

    
    <meta name="description" content="第三次周报1） 区块链落地项目探讨 2） 第一个区块链游戏——CryptoKitties理解与解析 3） 以太坊 1.区块链落地项目探讨1.1.区块链的优缺点分析区块链的优点：1.去中心化，抛开代理商更让人有参与感             2.不可篡改的时间戳，加强安全性，也进一步促进人们参与热情             3.开放性，开放性意味着其透明性，技术的发展更加迅猛 总结：新生的具有巨大潜">
<meta name="keywords" content="周报,苏思捷">
<meta property="og:type" content="article">
<meta property="og:title" content="第三周周报">
<meta property="og:url" content="http://b3434lockchain.gitee.io/2018/10/21/susijie/susijie3/index.html">
<meta property="og:site_name" content="B3434lockchain">
<meta property="og:description" content="第三次周报1） 区块链落地项目探讨 2） 第一个区块链游戏——CryptoKitties理解与解析 3） 以太坊 1.区块链落地项目探讨1.1.区块链的优缺点分析区块链的优点：1.去中心化，抛开代理商更让人有参与感             2.不可篡改的时间戳，加强安全性，也进一步促进人们参与热情             3.开放性，开放性意味着其透明性，技术的发展更加迅猛 总结：新生的具有巨大潜">
<meta property="og:locale" content="default">
<meta property="og:updated_time" content="2018-10-21T13:18:08.000Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="第三周周报">
<meta name="twitter:description" content="第三次周报1） 区块链落地项目探讨 2） 第一个区块链游戏——CryptoKitties理解与解析 3） 以太坊 1.区块链落地项目探讨1.1.区块链的优缺点分析区块链的优点：1.去中心化，抛开代理商更让人有参与感             2.不可篡改的时间戳，加强安全性，也进一步促进人们参与热情             3.开放性，开放性意味着其透明性，技术的发展更加迅猛 总结：新生的具有巨大潜">

    
    <link rel="alternative" href="/atom.xml" title="B3434lockchain" type="application/atom+xml">
    
    
    <link rel="icon" href="/img/favicon.ico">
    
    
    <link rel="apple-touch-icon" href="/img/jacman.jpg">
    <link rel="apple-touch-icon-precomposed" href="/img/jacman.jpg">
    
    <link rel="stylesheet" href="/css/style.css">
</head>

  <body>
    <header>
      
<div>
		
			<div id="imglogo">
				<a href="/"><img src="/img/logo.png" alt="B3434lockchain" title="B3434lockchain"/></a>
			</div>
			
			<div id="textlogo">
				<h1 class="site-name"><a href="/" title="B3434lockchain">B3434lockchain</a></h1>
				<h2 class="blog-motto"></h2>
			</div>
			<div class="navbar"><a class="navbutton navmobile" href="#" title="Menu">
			</a></div>
			<nav class="animated">
				<ul>
					<ul>
					 
						<li><a href="/">Home</a></li>
					
						<li><a href="/archives">Archives</a></li>
					
						<li><a href="/about">About</a></li>
					
					<li>
 					
						<form class="search" action="https://www.baidu.com" target="_blank">
							<label>Search</label>
						<input name="s" type="hidden" value=  ><input type="text" name="q" size="30" placeholder="Search"><br>
						</form>
					
					</li>
				</ul>
			</nav>			
</div>
    </header>
    <div id="container">
      <div id="main" class="post" itemscope itemprop="blogPost">
  
	<article itemprop="articleBody"> 
		<header class="article-info clearfix">
  <h1 itemprop="name">
    
      <a href="/2018/10/21/susijie/susijie3/" title="第三周周报" itemprop="url">第三周周报</a>
  </h1>
  <p class="article-author">By
       
		<a href="/about" title="b3434lockchain" target="_blank" itemprop="author">b3434lockchain</a>
		
  <p class="article-time">
    <time datetime="2018-10-21T13:15:00.000Z" itemprop="datePublished"> Published 2018-10-21</time>
    
  </p>
</header>
	<div class="article-content">
		
		<div id="toc" class="toc-article">
			<strong class="toc-title">Contents</strong>
		
			<ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#第三次周报"><span class="toc-number">1.</span> <span class="toc-text">第三次周报</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#1-区块链落地项目探讨"><span class="toc-number">1.1.</span> <span class="toc-text">1.区块链落地项目探讨</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1-1-区块链的优缺点分析"><span class="toc-number">1.1.1.</span> <span class="toc-text">1.1.区块链的优缺点分析</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#1-2-落地项目探讨"><span class="toc-number">1.1.2.</span> <span class="toc-text">1.2.落地项目探讨</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#2-第一个区块链游戏——CryptoKitties理解与解析"><span class="toc-number">1.2.</span> <span class="toc-text">2.第一个区块链游戏——CryptoKitties理解与解析</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#（1）关于迷恋猫"><span class="toc-number">1.2.1.</span> <span class="toc-text">（1）关于迷恋猫</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#（2）代码理解"><span class="toc-number">1.2.2.</span> <span class="toc-text">（2）代码理解</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#（3）总结"><span class="toc-number">1.2.3.</span> <span class="toc-text">（3）总结</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#3-以太坊"><span class="toc-number">1.3.</span> <span class="toc-text">3.以太坊</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#（3）-以太坊的实现"><span class="toc-number">1.3.1.</span> <span class="toc-text">（3） 以太坊的实现</span></a></li></ol></li></ol></li></ol>
		
		</div>
		
		<h1 id="第三次周报"><a href="#第三次周报" class="headerlink" title="第三次周报"></a>第三次周报</h1><pre><code>1） 区块链落地项目探讨
2） 第一个区块链游戏——CryptoKitties理解与解析
3） 以太坊
</code></pre><h2 id="1-区块链落地项目探讨"><a href="#1-区块链落地项目探讨" class="headerlink" title="1.区块链落地项目探讨"></a>1.区块链落地项目探讨</h2><h3 id="1-1-区块链的优缺点分析"><a href="#1-1-区块链的优缺点分析" class="headerlink" title="1.1.区块链的优缺点分析"></a>1.1.区块链的优缺点分析</h3><pre><code>区块链的优点：1.去中心化，抛开代理商更让人有参与感
            2.不可篡改的时间戳，加强安全性，也进一步促进人们参与热情
            3.开放性，开放性意味着其透明性，技术的发展更加迅猛
总结：新生的具有巨大潜力、巨大市场的新兴事物
区块链缺点：1.资源冗余，因为对某个操作的记录，带来随着时间无限增长的资源冗余。
          2.缺乏隐私，只要知道id就可以查到你的所有记录
          3.监管难度，去中心话导致容易成为不法交易的法外之地
总结：前2个问题为技术问题，而最重要的是第三个问题，牵扯到国家层面的政治经济问题，而其监管难度之大又是由于其特点或者说是优点导致的，几乎无法解决，这将成为发展的最大阻力。
</code></pre><h3 id="1-2-落地项目探讨"><a href="#1-2-落地项目探讨" class="headerlink" title="1.2.落地项目探讨"></a>1.2.落地项目探讨</h3><p>区块链的自由和开放比将使其具有非常巨大的发展潜力，但在某些方面，在国家层面上，绝对自由和开放是不被提倡甚至被禁止的，绝对自由意味着会出现无法监管到的黑色地带、灰色地带，例如比特币下的毒品交易、勒索交易，容易成为非法分子的不法之地，所以在金融方面持看衰角度。但当抛开金融，结合国家最近的电竞之风，区块链具有自由发展的前景和无法预估的市场竞争，游戏是阶级稳定的必需品，而区块链游戏的去中心话更能取悦大部分玩家。著名的第一个区块链游戏—迷恋猫通过2000多行代码，带来了几百万美元的交易，而其中几只初代猫已经拍卖到几十万美元一只，而这款游戏在2017年开发，可以看出现在市场还具有相当大的潜力和空间。</p>
<h2 id="2-第一个区块链游戏——CryptoKitties理解与解析"><a href="#2-第一个区块链游戏——CryptoKitties理解与解析" class="headerlink" title="2.第一个区块链游戏——CryptoKitties理解与解析"></a>2.第一个区块链游戏——CryptoKitties理解与解析</h2><h3 id="（1）关于迷恋猫"><a href="#（1）关于迷恋猫" class="headerlink" title="（1）关于迷恋猫"></a>（1）关于迷恋猫</h3><p>Cryptokitties，聚众云吸猫的游戏，是基于以太坊平台运行的。用户在游戏中可以养大、买卖并繁育“电子宠物”小猫，每只小猫和繁衍的后代都是独一无二的。从这款游戏于2017年11月上线到2017年12月3日之前，以太坊排队待处理的交易几乎没有突破5000，但3日开始，待处理交易几乎直线上升，到4日凌晨4点左右已经突破1万，当日下午已经突破1.5万，5日接近凌晨6点触及2万关口。目前，这款游戏的交易平台至少完成了2万只电子猫的买卖，交易额约330万美元。</p>
<h3 id="（2）代码理解"><a href="#（2）代码理解" class="headerlink" title="（2）代码理解"></a>（2）代码理解</h3><pre><code>contract Ownable
contract ERC721
contract GeneScienceInterface
contract KittyAccessControl
contract KittyBase is KittyAccessControl
contract ERC721Metadata
contract KittyOwnership is KittyBase, ERC721
contract KittyBreeding is KittyOwnership
contract ClockAuctionBase
contract Pausable is Ownable
contract ClockAuction is Pausable, ClockAuctionBase
contract SaleClockAuction is ClockAuction
contract KittyAuction is KittyBreeding
contract KittyMinting is KittyAuction
contract KittyCore is KittyMinting
</code></pre><p>迷恋猫采取的是部分开源的代码，除了最重要的基因部分没有开源，其他代码全部开源共计2009行。一共包含了15个contract，如上图。包含的功能有交易、繁殖等全部人可以进行的操作，还有冻结交易等只有最高权限（如CE0）才能有的操作，最高权限的操作让我明白了区块链游戏中开发者对于自己本身权力的一些维护，这在后文将详细提及</p>
<pre><code>struct Kitty {
    uint256 genes;          // 猫猫的基因
    uint64 birthTime;       // 猫猫出生的日期
    uint64 cooldownEndBlock;// 猫猫可以再次进行繁殖的最小区块。用于已经怀孕的猫猫
    uint32 matronId;        // 猫妈妈的ID
    uint32 sireId;          // 猫爸爸的ID
    uint32 siringWithId;    // 怀孕繁殖期，当前交配的猫猫ID。
    uint16 cooldownIndex;   // 繁殖冷却时间
    uint16 generation;      // 猫猫的代数
}
...
}
</code></pre><p>猫咪最重要的定义部分，非常浅显易懂，其中与区块链有关的为再次繁殖的区块号。所有喵的外表都是通过前端的web服务器来解析的，也就是说开发人员可以随意定义哪些喵是fancy cat，并且一旦web服务器崩溃那么所有的喵除了cooldownIndex之外将没有任何区别。这也从侧面反应了区块链应用的一个缺陷——不可能将所有的应用数据都存储再区块链上，因为链上存储数据的代价太高了，所以未来如果要开发真正的完全去中心化的应用，如何将这些数据的存储也去中心化是一个值得考虑的问题。</p>
<pre><code>function giveBirth(uint256 _matronId)
    external
    whenNotPaused
    returns(uint256)
{
    // 通过母亲的ID获取对象
    Kitty storage matron = kitties[_matronId];

    // 通过birthTime验证是否是合法的喵
    require(matron.birthTime != 0);

    // 检查母亲是否该生了
    require(_isReadyToGiveBirth(matron));

    // 获取父亲的对象
    uint256 sireId = matron.siringWithId;
    Kitty storage sire = kitties[sireId];

    // 计算父母的generation大的一个
    uint16 parentGen = matron.generation;
    if (sire.generation &gt; matron.generation) {
        parentGen = sire.generation;
    }

    // 传入父母基因，调用外部基因组合函数，得到新喵的基因
    uint256 childGenes = geneScience.mixGenes(matron.genes, sire.genes, matron.cooldownEndBlock - 1);

    // 新喵的owner设置为母亲的owner
    address owner = kittyIndexToOwner[_matronId];
    uint256 kittenId = _createKitty(_matronId, matron.siringWithId, parentGen + 1, childGenes, owner);

    // 清除母亲的交配对象，使得可以再次繁殖
    delete matron.siringWithId;

    // 怀孕的喵数减一
    pregnantKitties--;

    // 将费用发送给父亲
    msg.sender.send(autoBirthFee);

    // 返回新喵的ID
    return kittenId;
}
</code></pre><p>这是比较重要的一段代码，是猫的繁殖（类似于挖矿过程），为了防止数量的膨胀，里面设置了交配的冷却时间，而这个冷却时间会随着交配代数的上升而上升。这也是区块链中一个很有意义的做法，不断生成少量的货币促进市场的活力，拉动用户参与的积极性。而控制生成货币的速度可以防止货币的贬值，导致用户的流失，使得货币更有储存意义。</p>
<pre><code>    function _transfer(address _from, address _to, uint256 _tokenId) internal {
    // 增加新拥有者猫猫的数量
    ownershipTokenCount[_to]++;
    // 变更猫猫的新主人为_to
    kittyIndexToOwner[_tokenId] = _to;
    // 判断_from地址是否为空
    if (_from != address(0)) {    
        // 如果不为空，_from原拥有者的猫猫数量减一
        ownershipTokenCount[_from]--;
        // 删除这个猫猫的出售信息
        delete sireAllowedToAddress[_tokenId];
        // 删除这个猫猫的交配信息
        delete kittyIndexToApproved[_tokenId];
    }
    // 事件记录
    Transfer(_from, _to, _tokenId);
}
</code></pre><p>区块链中另外一个重要的板块，交易板块。以前以为交易板块是非常复杂的，而看了迷恋猫的代码，发现交易板块还是非常简单。而唯一一个需要注意的是交易板块中只能对自己的猫出售，这一部分出问题会导致体系的奔溃</p>
<pre><code>contract ERC721 {
// Required methods
// 返回所有非同质代币的数量
function totalSupply() public view returns (uint256 total);
// 返回_owner的非同质代币的数量
function balanceOf(address _owner) public view returns (uint256 balance);
// 返回_tokenId非同质代币的拥有者的地址
function ownerOf(uint256 _tokenId) external view returns (address owner);
// 将_tokenId非同质代币授权给地址_to的拥有者
// approve()方法的目的是可以授权第三人来代替自己执行交易
function approve(address _to, uint256 _tokenId) external;
// 将_tokenId非同质代币转移给地址为_to的拥有者
function transfer(address _to, uint256 _tokenId) external;
// 从_from拥有者转移_tokenId非同质代币给_to新的拥有者
// 内部调用transfer方法进行转移
function transferFrom(address _from, address _to, uint256 _tokenId) external;

// Events
// 两个事件来分别记录转移和授权
event Transfer(address from, address to, uint256 tokenId);
event Approval(address owner, address approved, uint256 tokenId);
</code></pre><p>非同质代币的ERC-721接口，迷恋猫与比特币一个很大的不同点为单位价格的相同与不相同。比特币是同质代币，每一个币没有区分度，价格相同。而迷恋猫每只猫由于基因的不同，价格不同，我觉得游戏的区块链发展上非同质代币的潜力非常巨大，而且非同质代币更有其收藏价值，毕竟你拥有的，是最独一无二的</p>
<pre><code>function KittyCore() public {
 // Starts paused.
 paused = true;

 // the creator of the contract is the initial CEO
 ceoAddress = msg.sender;

 // the creator of the contract is also the initial COO
 cooAddress = msg.sender;

 // start with the mythical kitten 0 - so we don&apos;t have generation-0 parent issues
 _createKitty(0, 0, 0, uint256(-1), address(0));
}
</code></pre><p>当然，对于我们来说，作为一个开发者，我们应该想到对玩家的好处便捷，也应该想到对自己的好处。我以前一直很好奇当区块链开发后，由于其公开透明去中心化，我们是不是就丧失了开发者的优势而对其失去了控制？通过读迷恋猫的代码，我明白了原来可以通过添加权限代码来控制区块链程序，上图的代码为CE0的权限，他可以使得交易被冻结。而C00的权限可以修改0代猫的交易和数量，这也就使得区块链的开发者能从中更好获益（当起成规模时）</p>
<h3 id="（3）总结"><a href="#（3）总结" class="headerlink" title="（3）总结"></a>（3）总结</h3><p>所以总的来说，迷恋猫作为第一款区块链的游戏，具有划时代的意义和非常高的指导价值，他让更多人知道了解区块链，也对于我们这种区块链的开发者有了一个可行而且前景更大的落地方向，他的游戏思想与区块链的结合非常有指导意义。但其中也存在一些不足，比如他的基因交配函数时固定的，导致他不能放出基因代码以防止人们为了产生更好看更独特的猫而有选择的进行交配。这一部分代码的封锁恰恰是最重要最使人好奇的，当这部分代码封锁人们会体验不到去中心化（即猫长啥样还是看开发者的意图决定）。我觉得可以添加一些随机性，然后增加一些开源项，会使其焕发新的活力。</p>
<h2 id="3-以太坊"><a href="#3-以太坊" class="headerlink" title="3.以太坊"></a>3.以太坊</h2><p>###（1） 关于以太坊<br>作为迷恋猫的载体平台——以太网，有必要进行深入了解。</p>
<p>以太坊（英文Ethereum）是一个开源的有智能合约功能的公共区块链平台，通过其专用加密货币以太币（Ether）提供去中心化的虚拟机（“以太虚拟机” Ethereum Virtual Machine）来处理点对点合约。</p>
<p>以太坊的概念首次在2013至2014年间由程序员Vitalik Buterin受比特币启发后提出，大意为“下一代加密货币与去中心化应用平台”，在2014年通过ICO众筹开始得以发展。</p>
<p>截至2018年2月，以太币是市值第二高的加密货币，仅次于比特币。</p>
<p>###（2） 以太坊发展历史<br>2013年年末，以太坊创始人Vitalik Buterin发布了以太坊初版白皮书，启动了项目。2014年7月24日起，以太坊进行了为期42天的以太币预售。</p>
<p>2016年初，以太坊的技术得到市场认可，价格开始暴涨，吸引了大量开发者以外的人进入以太坊的世界。中国三大比特币交易所之二的火币网及OKCoin币行都于2017年5月31日正式上线以太坊。</p>
<p>自从进入2016年以来，那些密切关注数字货币产业的人都急切地观察着第二代加密货币平台以太坊的发展动向。</p>
<p>作为一种比较新的利用比特币技术的开发项目，以太坊致力于实施全球去中心化且无所有权的的数字技术计算机来执行点对点合约。简单来说就是，以太坊是一个你无法关闭的世界计算机。加密架构与图灵完整性的创新型结合可以促进大量的新产业的出现。反过来，传统行业的创新压力越来越大，甚至面临淘汰的风险。</p>
<p>比特币网络事实上是一套分布式的数据库，而以太坊则更进一步，她可以看作是一台分布式的计算机：区块链是计算机的ROM，合约是程序，而以太坊的矿工们则负责计算，担任CPU的角色。这台计算机不是、也不可能是免费使用的，不然任何人都可以往里面存储各种垃圾信息和执行各种鸡毛蒜皮的计算，使用它至少需要支付计算费和存储费，当然还有其它一些费用。</p>
<p>最为知名的是2017年初以摩根大通、芝加哥交易所集团、纽约梅隆银行、汤森路透、微软、英特尔、埃森哲等20多家全球顶尖金融机构和科技公司成立的企业以太坊联盟。而以太坊催生的加密货币以太币近期又成了继比特币之后受追捧的资产</p>
<h3 id="（3）-以太坊的实现"><a href="#（3）-以太坊的实现" class="headerlink" title="（3） 以太坊的实现"></a>（3） 以太坊的实现</h3><p>以太坊的两个主要的客户端软件是Geth和Parity。</p>
  
	</div>
		<footer class="article-footer clearfix">
<div class="article-catetags">


  <div class="article-tags">
  
  <span></span> <a href="/tags/周报/">周报</a><a href="/tags/苏思捷/">苏思捷</a>
  </div>

</div>



	<div class="article-share" id="share">
	
	  <div data-url="http://b3434lockchain.gitee.io/2018/10/21/susijie/susijie3/" data-title="第三周周报 | B3434lockchain" data-tsina="" class="share clearfix">
	  </div>
	
	</div>


</footer>

   	       
	</article>
	
<nav class="article-nav clearfix">
 
 <div class="prev" >
 <a href="/2018/10/21/lujiahao/lujiahao3/" title="链码开发测试">
  <strong>上一篇：</strong><br/>
  <span>
  链码开发测试</span>
</a>
</div>


<div class="next">
<a href="/2018/10/21/tanjunxi/tanjunxi3/"  title="谭俊熙_Fabric-sdk-java调试">
 <strong>下一篇：</strong><br/> 
 <span>谭俊熙_Fabric-sdk-java调试
</span>
</a>
</div>

</nav>

	



</div>  
      <div class="openaside"><a class="navbutton" href="#" title="Show Sidebar"></a></div>

  <div id="toc" class="toc-aside">
  <strong class="toc-title">Contents</strong>
 
 <ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#第三次周报"><span class="toc-number">1.</span> <span class="toc-text">第三次周报</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#1-区块链落地项目探讨"><span class="toc-number">1.1.</span> <span class="toc-text">1.区块链落地项目探讨</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#1-1-区块链的优缺点分析"><span class="toc-number">1.1.1.</span> <span class="toc-text">1.1.区块链的优缺点分析</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#1-2-落地项目探讨"><span class="toc-number">1.1.2.</span> <span class="toc-text">1.2.落地项目探讨</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#2-第一个区块链游戏——CryptoKitties理解与解析"><span class="toc-number">1.2.</span> <span class="toc-text">2.第一个区块链游戏——CryptoKitties理解与解析</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#（1）关于迷恋猫"><span class="toc-number">1.2.1.</span> <span class="toc-text">（1）关于迷恋猫</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#（2）代码理解"><span class="toc-number">1.2.2.</span> <span class="toc-text">（2）代码理解</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#（3）总结"><span class="toc-number">1.2.3.</span> <span class="toc-text">（3）总结</span></a></li></ol></li><li class="toc-item toc-level-2"><a class="toc-link" href="#3-以太坊"><span class="toc-number">1.3.</span> <span class="toc-text">3.以太坊</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#（3）-以太坊的实现"><span class="toc-number">1.3.1.</span> <span class="toc-text">（3） 以太坊的实现</span></a></li></ol></li></ol></li></ol>
 
  </div>

<div id="asidepart">
<div class="closeaside"><a class="closebutton" href="#" title="Hide Sidebar"></a></div>
<aside class="clearfix">

  

  
<div class="tagslist">
	<p class="asidetitle">Tags</p>
		<ul class="clearfix">
		
			
				<li><a href="/tags/周报/" title="周报">周报<sup>23</sup></a></li>
			
		
			
				<li><a href="/tags/谭俊熙/" title="谭俊熙">谭俊熙<sup>11</sup></a></li>
			
		
			
				<li><a href="/tags/苏思捷/" title="苏思捷">苏思捷<sup>5</sup></a></li>
			
		
			
				<li><a href="/tags/学习报告/" title="学习报告">学习报告<sup>5</sup></a></li>
			
		
			
				<li><a href="/tags/卢家豪/" title="卢家豪">卢家豪<sup>5</sup></a></li>
			
		
			
				<li><a href="/tags/报告/" title="报告">报告<sup>5</sup></a></li>
			
		
			
				<li><a href="/tags/苏佳鑫/" title="苏佳鑫">苏佳鑫<sup>4</sup></a></li>
			
		
			
				<li><a href="/tags/冯华文/" title="冯华文">冯华文<sup>4</sup></a></li>
			
		
			
				<li><a href="/tags/周报反馈/" title="周报反馈">周报反馈<sup>2</sup></a></li>
			
		
			
				<li><a href="/tags/吴朝捷/" title="吴朝捷">吴朝捷<sup>2</sup></a></li>
			
		
			
				<li><a href="/tags/黎宁/" title="黎宁">黎宁<sup>1</sup></a></li>
			
		
			
				<li><a href="/tags/笔记/" title="笔记">笔记<sup>1</sup></a></li>
			
		
		</ul>
</div>


</aside>
</div>
    </div>
    <footer><div id="footer" >
	
	
	<div class="social-font" class="clearfix">
		
		
		
		
		
		
		
		
		
		
	</div>
			
		

		<p class="copyright">
		
		</p>
</div>
</footer>
    <script src="/js/jquery-2.0.3.min.js"></script>
<script src="/js/jquery.imagesloaded.min.js"></script>
<script src="/js/gallery.js"></script>
<script src="/js/jquery.qrcode-0.12.0.min.js"></script>

<script type="text/javascript">
$(document).ready(function(){ 
  $('.navbar').click(function(){
    $('header nav').toggleClass('shownav');
  });
  var myWidth = 0;
  function getSize(){
    if( typeof( window.innerWidth ) == 'number' ) {
      myWidth = window.innerWidth;
    } else if( document.documentElement && document.documentElement.clientWidth) {
      myWidth = document.documentElement.clientWidth;
    };
  };
  var m = $('#main'),
      a = $('#asidepart'),
      c = $('.closeaside'),
      o = $('.openaside');
  c.click(function(){
    a.addClass('fadeOut').css('display', 'none');
    o.css('display', 'block').addClass('fadeIn');
    m.addClass('moveMain');
  });
  o.click(function(){
    o.css('display', 'none').removeClass('beforeFadeIn');
    a.css('display', 'block').removeClass('fadeOut').addClass('fadeIn');      
    m.removeClass('moveMain');
  });
  $(window).scroll(function(){
    o.css("top",Math.max(80,260-$(this).scrollTop()));
  });
  
  $(window).resize(function(){
    getSize(); 
    if (myWidth >= 1024) {
      $('header nav').removeClass('shownav');
    }else{
      m.removeClass('moveMain');
      a.css('display', 'block').removeClass('fadeOut');
      o.css('display', 'none');
      
      $('#toc.toc-aside').css('display', 'none');
        
    }
  });
});
</script>

<script type="text/javascript">
$(document).ready(function(){ 
  var ai = $('.article-content>iframe'),
      ae = $('.article-content>embed'),
      t  = $('#toc'),
      ta = $('#toc.toc-aside'),
      o  = $('.openaside'),
      c  = $('.closeaside');
  if(ai.length>0){
    ai.wrap('<div class="video-container" />');
  };
  if(ae.length>0){
   ae.wrap('<div class="video-container" />');
  };
  c.click(function(){
    ta.css('display', 'block').addClass('fadeIn');
  });
  o.click(function(){
    ta.css('display', 'none');
  });
  $(window).scroll(function(){
    ta.css("top",Math.max(140,320-$(this).scrollTop()));
  });
});
</script>


<script type="text/javascript">
$(document).ready(function(){ 
  var $this = $('.share'),
      url = $this.attr('data-url'),
      encodedUrl = encodeURIComponent(url),
      title = $this.attr('data-title'),
      tsina = $this.attr('data-tsina'),
      description = $this.attr('description');
  var html = [
  '<div class="hoverqrcode clearfix"></div>',
  '<a class="overlay" id="qrcode"></a>',
  '<a href="https://www.facebook.com/sharer.php?u=' + encodedUrl + '" class="article-share-facebook" target="_blank" title="Facebook"></a>',
  '<a href="https://twitter.com/intent/tweet?url=' + encodedUrl + '" class="article-share-twitter" target="_blank" title="Twitter"></a>',
  '<a href="#qrcode" class="article-share-qrcode" title="微信"></a>',
  '<a href="http://widget.renren.com/dialog/share?resourceUrl=' + encodedUrl + '&srcUrl=' + encodedUrl + '&title=' + title +'" class="article-share-renren" target="_blank" title="人人"></a>',
  '<a href="http://service.weibo.com/share/share.php?title='+title+'&url='+encodedUrl +'&ralateUid='+ tsina +'&searchPic=true&style=number' +'" class="article-share-weibo" target="_blank" title="微博"></a>',
  '<span title="Share to"></span>'
  ].join('');
  $this.append(html);

  $('.hoverqrcode').hide();

  var myWidth = 0;
  function updatehoverqrcode(){
    if( typeof( window.innerWidth ) == 'number' ) {
      myWidth = window.innerWidth;
    } else if( document.documentElement && document.documentElement.clientWidth) {
      myWidth = document.documentElement.clientWidth;
    };
    var qrsize = myWidth > 1024 ? 200:100;
    var options = {render: 'image', size: qrsize, fill: '#2ca6cb', text: url, radius: 0.5, quiet: 1};
    var p = $('.article-share-qrcode').position();
    $('.hoverqrcode').empty().css('width', qrsize).css('height', qrsize)
                          .css('left', p.left-qrsize/2+20).css('top', p.top-qrsize-10)
                          .qrcode(options);
  };
  $(window).resize(function(){
    $('.hoverqrcode').hide();
  });
  $('.article-share-qrcode').click(function(){
    updatehoverqrcode();
    $('.hoverqrcode').toggle();
  });
  $('.article-share-qrcode').hover(function(){}, function(){
      $('.hoverqrcode').hide();
  });
});   
</script>











<link rel="stylesheet" href="/fancybox/jquery.fancybox.css" media="screen" type="text/css">
<script src="/fancybox/jquery.fancybox.pack.js"></script>
<script type="text/javascript">
$(document).ready(function(){ 
  $('.article-content').each(function(i){
    $(this).find('img').each(function(){
      if ($(this).parent().hasClass('fancybox')) return;
      var alt = this.alt;
      if (alt) $(this).after('<span class="caption">' + alt + '</span>');
      $(this).wrap('<a href="' + this.src + '" title="' + alt + '" class="fancybox"></a>');
    });
    $(this).find('.fancybox').each(function(){
      $(this).attr('rel', 'article' + i);
    });
  });
  if($.fancybox){
    $('.fancybox').fancybox();
  }
}); 
</script>



<!-- Analytics Begin -->





<!-- Analytics End -->

<!-- Totop Begin -->

	<div id="totop">
	<a title="Back to Top"><img src="/img/scrollup.png"/></a>
	</div>
	<script src="/js/totop.js"></script>

<!-- Totop End -->

<!-- MathJax Begin -->
<!-- mathjax config similar to math.stackexchange -->


<!-- MathJax End -->

<!-- Tiny_search Begin -->

<!-- Tiny_search End -->

  </body>
</html>
